<template>
  <h2>姓名：{{ person.name }}</h2>
  <h2>年龄：{{ person.age }}</h2>
  <h2>薪资：{{ person.job.job2.salary }} K</h2>
  <button @click="person.name+='~'">修改姓名</button>
  <button @click="person.age++">增长年龄</button>
  <button @click="person.job.job2.salary++">增长薪资</button>

  <hr>
  <!-- 使用toRef 可以简写取值的方式 -->
  <!-- <h2>姓名：{{name}}</h2>
  <h2>年龄：{{age}}</h2>
  <h2>薪资：{{salary}} K</h2>
  <button @click="name+='~'">修改姓名</button>
  <button @click="age++">增长年龄</button>
  <button @click="salary++">增长薪资</button> -->

  <!-- 使用toRefs 可以简写取值的方式 -->
  <h2>姓名：{{ name }}</h2>
  <h2>年龄：{{ age }}</h2>
  <h2>薪资：{{ job.job2.salary }} k</h2>
  <button @click="name+='~'">修改姓名</button>
  <button @click="age++">增长年龄</button>
  <button @click="job.job2.salary++">增长薪资</button>
</template>

<script>
// Vue3中的computed 是一个组合式的api，所以需要通过import 进行引入。
import {reactive, toRefs} from 'vue';

export default {
  name: 'Demo',
  setup() {
    // 数据
    let person = reactive({
      name: '张三',
      age: 18,
      job: {
        job2: {
          salary: 20
        }
      }
    });

    // // toRef 的作用是将一个不是Ref的变成是一个Ref，其中toRef的参数一是一个对象
    // const toName = toRef(person, 'name');
    // const toAge = toRef(person, 'age');
    // const toSalary = toRef(person.job.job2, 'salary');

    // console.log('toName:', toName);
    // console.log('toAge:', toAge);
    // console.log('toSalary:', toSalary);

    // 将一个对象里面的所有属性都进行转换成了Ref
    const p = toRefs(person);
    console.log(p);

    // 返回一个对象（常用）
    return {
      person,
      ...p
      // name: toName,
      // age: toAge,
      // salary: toSalary
    }
  }
}
</script>

<style>

</style>